package work.linruchang.util.other;

import cn.hutool.core.lang.func.Func1;
import cn.hutool.core.util.EnumUtil;
import cn.hutool.core.util.ObjectUtil;

/**
 * 增强的枚举工具类
 *
 * @author LinRuChang
 * @version 1.0
 * @date 2022/09/20
 * @since 1.8
 **/
public class EnhanceEnumUtil extends EnumUtil {

    /**
     * 通过 某字段对应值 获取 枚举，获取不到时为 {@code defaultEnum}
     *
     * @param condition 条件字段
     * @param value     条件字段值
     * @param defaultEnum     条件找不到则返回结果使用这个
     * @return 对应枚举 ，获取不到时为 {@code null}
     */
    public static <E extends Enum<E>, C> E getBy(Func1<E, C> condition, C value, E defaultEnum) {
        return ObjectUtil.defaultIfNull(getBy(condition,value), defaultEnum);
    }

}
